#include <stdio.h>
#include <stdlib.h>



/*
 *A以每年10%的单利息投资量100美元,B以每年5%的复合利息投资量100美元。编写一个程序,计算需要多少年B的投资总额才会超过A的，并且显示出到那个时刻两个人的各自的资产总额
 *A每年有原始投资的10% 			B每年有原始的本金和利息
 * */
#define A_PORT 0.1
#define B_PORT 0.05

void test1(void)
{
	int flag = 1;
	int year = 0;
	//初始钱
	int a_money = 100;
	int b_money = 100;
	//利息
	int a_add = 0;
	int b_add = 0;
	//总金额
	int a_sum = a_money;
	int b_sum = 0;
	while(flag)
	{
		year++;
		
		a_add = a_money * A_PORT;	
		a_sum +=  a_add;		

		b_add = b_money * B_PORT;
		b_money =b_money+ b_add;	
		b_sum = b_money;
		//		printf("[%s]%d",__FUNCTION__,__LINE__);
		if (b_sum >= a_sum)
		{
			printf(" [%d]  a_sum = %d,b_sum = %d\n",year,a_sum,b_sum);
			flag = 0;
		}
		//		printf("[%s]%d",__FUNCTION__,__LINE__);

	}

}

/*
 *从终端输入数据，直到输入0值为止，计算出其中的偶数的个数及平均值和奇数的个数及平均值
 * */
void test2(void)
{
	int flag = 1;
	int num = 0;
	float sum1= 0,sum2 = 0;//小bug: 0/n 报错   注意标准输出用 %f
	int sum1_num = 0, sum2_num = 0;
	while(flag)
	{
		int ret = 0;
		printf("====\n");
		ret = scanf("%d",&num);
		printf("num = %d\n",num);
		if (ret == 0)
		{
			printf("!!");
			exit(-1);
		}else
		{	//偶数
			if (num %2 == 0)
			{
				sum2 += num;
				sum2_num ++;
			//奇数	
			}else if(num%2 !=0)
			{
			
				sum1 +=num;
				sum1_num ++;	
			}
			if (num == 0)
			{
				printf("偶数个数:%d平均值:%f\n奇数个数%d平均值%f\n",sum2_num,(sum2/sum2_num),sum1_num,(sum1/sum1_num));
				flag = 0;	
			}
		}
	}
}
/*
 *从终端输入若干字符，对其中的元音字母进行统计
 * */
void test3(void)
{
	int ch;
	int num = 0;
	int ret = 0;
	
	while(1){
		printf("=====\n");
		ch = getchar();
			switch(ch)
			{
				case 'a':
				case 'e':
				case 'u':
				case 'i':
				case 'o':
				case 'A':
				case 'E':
				case 'U':
				case 'I':
				case 'O':
					num++;
					break;	
				default:
					break;
			}
		getchar();/* 小bug: 这里要吃掉一个字符*/
		printf("num = %d\n",num);
		
	}

}

/*
 *写出fibonacci数列的前40项(不用数组实现)
 *1 1 2 3 5 8 13 21
 * */
void test4(void)
{
	static int i;
	int j = 1;
	int temp_1 = 0,temp_2 = 0;
	for(i = 0;i<40;i++)
	{
		
		if (i <= 1 )
		{	
			printf("j = %d\n",j);
			temp_1 = j;
			temp_2 = j;
		}else
		{
			j=temp_1+temp_2;
			//i = 3
			if (i % 2 != 0){
				temp_1 = j;
			}else if( i % 2 == 0)
			{

				temp_2 = j;
			}
			
			printf("j = %d\n",j);
		}

	}



}
/*
 *输入99乘法表
 * */
void test5(void)
{
	int i,j;
	for (i = 1;i<=9;i++)
	{

		for(j=1;j<=9;j++)
		{
			if(i >= j)
			{
			printf("%d * %d = %d ",i,j,i*j);
			}
		}
		printf("\n");

	}





}





/*
 *百钱买百鸡：鸡公一值钱五，鸡母一值钱三；三小鸡值钱一，问鸡公鸡母小鸡各几只
 * */
void test6(void)
{
	/*
	 * x+y+z = 100
	 * 5x+3y+z/3 = 100
	 * */
	int i,j,k;
	
	for (i=0;i<100/5;i++) //全买鸡公 最多20只
	{
		for(j = 0;j<100/3;j++) //全买鸡母 最大100/3只
		{
		/*for(k=0;k<100;k++)
			{
				if ((i +j +k) == 100 && (i*5+j*3+k/3) == 100)   //小bug: 优先级
				{
					printf("%d %d %d\n",i,j,k);
				}			
	
			}
		03级别	*/
		
		//优化:
			k = 100 -i -j;
			if(k%3 == 0 && 5*i+3*j +k/3 == 100)
			{

				printf("%d %d %d\n",i,j,k);
			}


		}

	}



}

/*
 *求出1000以内的水仙花数：153 =  1^3 + 5^ 3 + 3^3
 * */
void test7(void)
{
	int i = 100;
	for(i = 100;i<1000;i++)
	{
	//	printf("%d\n",i);
		int b = i /100;
		int s = (i/10)%10;
		int g = i%100%10;
		if(b*b*b+s*s*s+g*g*g == i )
		{
			printf("i = %d\n",i);
	
		}

	}


}
/*
 *求出1000以内的质数   2-1000 i%i !=0 不会
 * */
void test8(void)
{
	int i = 2,j = 2, mark = 1;
	for (i=2;i<1000;i++)
	{
		mark = 1;
		for (j=2;j<i/2;j++)
		{
		/*	if (i % j != 0)
			{
				printf("质数：%d\n"i);	
			
			}
		*/
		//不是质数
			if(i %j == 0)
			{
				mark = 0;
				break;

			}
		}

		if (mark == 1){
			printf("%d\n",i);
		}
	}


}
/*
 *输出
ABCDEF
BCDEF
CDEF
DEF
EF
F
 * */
void test9(void)
{
	int i,j;
	
	for(i = 0;i<6;i++)
	{
	char ch = 65;
	ch+=i;
		for (j = 0;j<6;j++)
		{
			if (j>= i+1)
			{
			
				printf("%c",ch);
				ch++;
			}
		}
		printf("\n");

	}


}
/*
 *输出钻石型
	*
       * *
      * * *
       * *
        * 
 * */
#define MAX 4
void test10(void)
{
	int i = 0;
	for (i=0;i<=MAX;i++)
	{
		if(i== 0 || i == MAX)
		{
			printf("i = %d\n",i);
			printf("\t*\n");

		}else if(i == MAX/2)
		{	printf("i = %d\n",i);
			printf("\t* * *\n");
		}else{
			printf("i = %d\n",i);
			printf("\t * *\n");

		}
		
	}

}

/*
 *从终端输入n个数求和 （以字母Q/q作为终止），求和
 * */
void test11(void)
{
	int flag = 1;
	int ret = 0;
	float res = 0,sum = 0 ;
	while(flag)
	{
		printf("plz enter:\n");
		ret = scanf("%f",&res);
		
		if (ret == 1){
			sum+= res;
			printf(" if res = %f\n",res);
			
		}else if (ret == 0)
		{	
		/*	if (res != 'Q'|| res != 'q')
			{
					
				fprintf(stderr, "enter error\n");
				flag = 0;
			}else
			{
				printf("res =%f\n ",res);
			}
		*/
		printf("if else res = %f\n",res);
		printf("sum = %f\n",sum);
		flag = 0;
			
		}
	} 



}
/*
 *输出从半径为1开始，输出圆的面积，直到圆的半径大于100为止
 * */
#define PI 3.14
void test12(void)
{
	float r= 1 ,s = 0;
	int i = 1;
	for (i = 1;i <= 100;i++)
	{
		s = PI *r * r;
		printf("%.2f\n",s);
		r++;

	}


}
int main(void)
{



//	test1();
//	test2();
//	test3();
//	test4();
//	test5();
//	test6();
//
//	test7();
//	test8();
//	test9();
//	test10();
//	test11();
	test12();
	exit(0);
}
